package com.sfpay.coreplatform.member.persistence.dao;

import org.apache.ibatis.annotations.Param;

import com.sfpay.coreplatform.member.common.enums.CertType;
import com.sfpay.coreplatform.member.common.enums.MemberType;
import com.sfpay.coreplatform.member.valueobject.dto.Member;
import com.sfpay.coreplatform.member.valueobject.dto.PersonMember;
import com.sfpay.coreplatform.member.valueobject.tmo.MemberInfo;

/**
 * 
 * 
 * 类说明：会员表管理dao
 *  
 * 
 * <p>
 * 详细描述：
 *   
 * 
 * @author 313717
 *   
 * CreateDate: 2013-4-12
 */
public interface IMemberManageDao 
{
	/**
	 * 
	 * 
	 * 方法说明：产生会员序列流水
	 *
	 * @return 会员序列流水
	 */
	public String getMemberNoSeq();
	
	/**
	 * 
	 *
	 * 方法说明：添加会员主表
	 *
	 * @param member
	 */
	public void addMemberInfo(MemberInfo memberInfo);
	
	/**
	 * 
	 *
	 * 方法说明：根据会员号修改会员主表部分信息
	 *
	 * @param member
	 */
	public void updateMemberInfoByMemberNo(MemberInfo MemberInfo);
	
	/**
	 * 
	 *
	 * 方法说明：根据会员号查询会员信息
	 *
	 * @param memberNo
	 */
	public Member queryMemberByMemberNo(@Param("memberNo")Long memberNo);
	
	/**
	 * 
	 *
	 * 方法说明：根据会员号注销会员
	 *
	 * @param memberNo
	 */
	public void cancelMemberByMemberNo(Long memberNo);
	
	/**
	 * 
	 *
	 * 方法说明：根据个人会员基本信息
	 *
	 * @param loginNo
	 * @param loginType
	 * @param memberType
	 * @return
	 */
	public Member queryPersonBaseInfoByType(@Param("loginNo")String loginNo,@Param("loginType")int loginType,
			@Param("memberType")MemberType memberType);
	
	/**
	 * 
	 *
	 * 方法说明：根据个人会员信息
	 *
	 * @param loginNo
	 * @param loginType
	 * @param memberType
	 * @return
	 */
	public PersonMember queryPersonInfoByType(@Param("loginNo")String loginNo,@Param("loginType")int loginType);
	
	/**
	 * 
	 *
	 * 方法说明：根据会员号查询会员信息
	 *
	 * @param memberNo
	 */
	public PersonMember queryPersonMemberByMemberNo(@Param("memberNo")Long memberNo);
	
	/**
	 * 
	 *
	 * 方法说明：根据个人证件类型与证件号查询个人会员信息
	 *
	 * @param certType
	 * @param certNo
	 * @return
	 */
	public PersonMember queryPersionMemberInfoByCert(@Param("certType")CertType certType,
			@Param("certNo")String certNo);

}
